// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/21/2015 7:34:51 PM				
// -----------------------------

#ifndef _IThread_h
#define _IThread_h

#include "Common.h"

namespace Flow
{

	class IThread
	{
	public:

		typedef void(*ThreadProc)(void* lpArgs);

		// Release the Thread
		virtual void	Release() = 0;

		// Start the Thread
		virtual void	Start(ThreadProc fn, void* lpArgs) = 0;
		// Stop the Thread
		virtual void	Stop() = 0;

		// Wait for the Thread to exit
		virtual void	WaitForExit() = 0;

		// Is the thread running?
		virtual Bool	IsRunning() const = 0;

	};

}

#endif